package com.example.mobilesafe1221.home;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ActivityManager;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.example.mobilesafe1221.R;
import com.example.mobilesafe1221.home.view.ArcProgressBar;

import java.io.File;

public class Homeactivity extends AppCompatActivity implements View.OnClickListener{
    //界面标题
    private TextView tv_title ;
    //显示手机清理，骚扰拦截，病毒查杀，软件管理信息对于布局  ；
    private LinearLayout ll_clean ,ll_interception,ll_security,ll_software_manager;
    //显示程序锁 网速测试 流量监控信息相对应的布局
    private RelativeLayout rl_app_lock,rl_speed_test,rl_netraffic ;

    private ArcProgressBar pb_sd,pb_rom ; //显示SD卡与内存信息控件


    private long total_sd ,avail_sd,total_rom,avail_rom ;//total_sd：SD卡的总容量，avail_sd,sd有效容量
    private  int sd_used,rom_used ;//SD卡已经使用的容量 ，rom已经使用的容量
    private RelativeLayout title_bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
//获取手机内置SD卡的内存与系统内存使用量与总量的占比
        getMemoryFromPhone();
        initView();





    }
    private void initView() {
        title_bar=findViewById(R.id.title_bar);
        title_bar.setBackgroundResource(R.color.SkyBlue);//设置标题栏的背景颜色为蓝色
        tv_title=findViewById(R.id.tv_main_title) ;
        tv_title.setText("手机安全卫士");
        ll_clean=findViewById(R.id.ll_clean) ;
        ll_interception=findViewById(R.id.ll_interception);
        ll_security=findViewById(R.id.ll_security);
        ll_software_manager=findViewById(R.id.ll_software_manager) ;


        rl_app_lock=findViewById(R.id.rl_app_lock);//程序锁
        rl_netraffic=findViewById(R.id.rl_netraffic);//榴莲管理
        rl_speed_test=findViewById(R.id.rl_speed_test) ;//网速测试

        pb_sd=findViewById(R.id.pb_sd) ;//SD卡
        pb_rom=findViewById(R.id.pb_rom) ;//系统内存

        pb_sd.setMax(100); //进度条
        pb_sd.setTitle("储存空间"); //圆环的中文提示
        new  MyAsyncSDTask().execute(0);


        pb_rom.setTitle("内存");//小圆环的中文提示
        //实现存储空间信息的显示
        new MyAsyncRomTask().execute(0);


        //监听控件
        ll_clean.setOnClickListener(this);//this是点前类的对象
        ll_interception.setOnClickListener(this);
        ll_security.setOnClickListener(this);
        ll_software_manager.setOnClickListener(this);

        rl_app_lock.setOnClickListener(this);
        rl_speed_test.setOnClickListener(this);
        rl_netraffic.setOnClickListener(this);
    }
    private void getMemoryFromPhone(){
        //获取内存SD卡的路径   storage/emulaged/0
        File path = Environment.getExternalStorageDirectory() ;
        //获取SD卡的储存信息
        StatFs stat =new StatFs(path.getPath());
        long blocksize=stat.getBlockSizeLong();//获取块大小
        long totalBlocks = stat.getBlockCountLong();
        total_sd=blocksize*totalBlocks ; //获取SD卡的整个存储空间
        long availableBlocks =stat.getAvailableBlocksLong();//获取有效块的大小
        avail_sd=blocksize*availableBlocks ;//总剩余空间
        //获得ActivityManager服务对象
        ActivityManager mActivityManager =(ActivityManager)  getSystemService(Context.ACTIVITY_SERVICE);
        //强制转换 向下转型
        //获取memoryinfo 对象
        ActivityManager.MemoryInfo memoryInfo =new ActivityManager.MemoryInfo() ;
        //获取系统可用的内存 ，保持在memoryinfo的对象上
        mActivityManager.getMemoryInfo(memoryInfo);
        //获取手机系统总和
        total_rom=memoryInfo.totalMem;
        avail_rom=memoryInfo.availMem ;// 获取系统有效内存

        //计算SD卡使用量与总量的比
        sd_used=(int)(((double)avail_sd/(double)total_sd)*100);
        rom_used=(int) (((double)avail_rom/(double)total_rom)*100); //系统内存使用量与总内存占比


    }

    //创建系统Rom的任务
    //创建系统Rom的任务，MyAsyncRomTask异步任务
    private class MyAsyncRomTask extends AsyncTask<Integer, Integer, Integer> {
        @Override
        protected Integer doInBackground(Integer... integers) {
            Integer timer=0;
            while (timer<=rom_used){
                publishProgress(timer);//更新进度
                timer++;
                try {
                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(Integer integer) {
            super.onPostExecute(integer);
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            pb_rom.setProgress((int)(values[0]));
        }
    }
    //创建SD内存卡的任务
    private class MyAsyncSDTask extends AsyncTask<Integer, Integer, Integer> {
        @Override
        protected Integer doInBackground(Integer... integers) {
            Integer timer = 0;
            while (timer <= sd_used) {

                publishProgress(timer);//更新进度条
                timer++;//timer的值自增
                try {
                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        protected void onPostExecute(Integer integer) {
            super.onPostExecute(integer);
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            pb_sd.setProgress((int)(values[0]));//设置ArcProgressBar的进度
        }

    }


    @Override
    public void onClick(View v) {


    }


}
